<
programming> (FP) A
program in a
functional language consists
of a set of (possibly
recursive)
function definitions and
an expression whose value is output as the program's result.
Functional languages are one kind of
declarative language.
They are mostly based on the
typed lambda-calculus with
constants. There are no
side-effects to expression
evaluation so an expression, e.g. a
function applied to
certain arguments, will always evaluate to the same value (if
its evaluation terminates). Furthermore, an expression can
always be replaced by its value without changing the overall
result (
referential transparency).
The order of evaluation of subexpressions is determined by the
language's
evaluation strategy. In a
strict
(
call-by-value) language this will specify that arguments
are evaluated before applying a
function whereas in a
non-strict (
call-by-name) language arguments are passed
unevaluated.
Programs written in a
functional language are generally
compact and elegant, but have tended, until recently, to run
slowly and require a lot of memory.
Examples of purely
functional languages are
Clean,
FP,
Haskell,
Hope,
Joy,
LML,
Miranda, and
SML. Many
other languages such as
Lisp have a subset which is purely
functional but also contain non-
functional constructs.
See also
lazy evaluation,
reduction.
{
Lecture notes
(ftp://ftp.cs.olemiss.edu/pub/tech-reports/umcis-1995-01.ps)}.
or the same {
in dvi-format
(ftp://ftp.cs.olemiss.edu/pub/tech-reports/umcis-1995-01.dvi)}.
{
FAQ
(http://cs.nott.ac.uk/Department/Staff/gmh/faq.html)}.
{
SEL-HPC Article Archive
(http://lpac.ac.uk/SEL-HPC/Articles/)}.
(2003-03-25)